package com.ts.main.admin.controller;

import com.ts.main.admin.dto.ProductOptionDto;
import com.ts.main.admin.dto.ProductOptionSearchPageDto;
import com.ts.main.admin.exception.R;
import com.ts.main.admin.exception.RPage;
import com.ts.main.admin.service.ProductOptionServiceImpl;
import com.ts.main.admin.vo.ProductOptionVo;
import com.ts.main.admin.vo.ProductPartVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @Author:lk
 * @Date: 2025/6/10  16:35
 */
@AllArgsConstructor
@RestController
@RequestMapping("/productOption")
@Tag(name = "商品管理-商品选项管理")
public class ProductOptionController {
    
    private final ProductOptionServiceImpl productOptionServiceImpl;

    @PostMapping("/getProductOptionPage")
    @Operation(summary = "查询商品选项列表（分页）")
    public RPage<List<ProductOptionVo>> getProductOptionPage(@RequestBody ProductOptionSearchPageDto dto){
        return productOptionServiceImpl.getProductOptionPage(dto);
    }

    @GetMapping("/getProductOptionDetails")
    @Operation(summary = "查询商品选项详情")
    public R<ProductOptionVo> getProductOptionDetails(@Schema(description = "商品选项ID")
                                                          @RequestParam("productOptionId") Integer productOptionId){
        return R.ok(productOptionServiceImpl.getProductOptionDetails(productOptionId));
    }

    @PostMapping("/saveProductOption")
    @Operation(summary = "添加商品选项")
    public R<Boolean> saveProductOption(@RequestBody ProductOptionDto dto) {
        return R.ok(productOptionServiceImpl.saveProductOption(dto));
    }

    @PutMapping("/updateProductOption")
    @Operation(summary = "修改商品选项")
    public R<Boolean> updateProductOption(@RequestBody ProductOptionDto dto) {
        return R.ok(productOptionServiceImpl.updateProductOption(dto));
    }

    @DeleteMapping("/deleteProductOption")
    @Operation(summary = "删除商品选项")
    public R<Boolean> deleteProductOption(@Schema(description = "商品选项ID")
                                              @RequestParam("productOptionId") Integer productOptionId) {
        return R.ok(productOptionServiceImpl.deleteProductOption(productOptionId));
    }

    @DeleteMapping("/getProductPartList")
    @Operation(summary = "查询商品列表（筛选项）")
    public R<List<ProductPartVo>> getProductPartList() {
        return R.ok(productOptionServiceImpl.getProductPartList());
    }

    
}
